package main.java.easy;

import java.util.HashSet;
import java.util.Set;

/**
 * @Author: 郑国荣
 * @Date: 2023-07-11-9:49
 * @Description: 给你一个 升序排列 的数组 nums ，请你 原地 删除重复出现的元素，使每个元素 只出现一次 ，返回删除后数组的新长度。
 * 元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。
 */
public class FindRepeatNum {
    public int findRepeatNumber(int[] nums) {
        Set<Integer> mp = new HashSet<>();
        for(int num : nums){
            if(mp.contains(num)) return num;
            else mp.add(num);
        }
        return -1;
    }

    public static int findRepeatNumber1(int[] nums) {
        int i = 0;
        while(i < nums.length) {
            if(nums[i] == i) {
                i++;
                continue;
            }
            if(nums[nums[i]] == nums[i]) return nums[i];
            int tmp = nums[i];
            nums[i] = nums[tmp];
            nums[tmp] = tmp;
        }
        return -1;
    }

    public static void main(String[] args) {
        int[] nums = {0,1,3,4,5,5};
        int result = findRepeatNumber1(nums);
        System.out.println("重复数字为: " + result);
    }

}
